Many computing systems operate according to a control flow architecture. In a control flow architecture, the execution of instructions of a program is driven by a program counter that steps through the instructions of a program. In other words, the order of execution of the instructions of the program is defined by the structure of the program itself. In some cases, a control flow architecture may operate improperly when attempting to implement parallel processing. For example, a program may state that an instruction is to be executed even though an input (e.g., operand) of the instruction has not yet been updated by a parallel operating instruction.
Some computing systems utilize a data flow architecture. A data flow architecture is not driven by an order of instruction execution defined by a program. Instead, a data flow architecture executions instruction according to the availability of the inputs (e.g., operands) of the instruction. For example, if an instruction has three operands, a computing system utilizing a data flow architecture will execute the instruction as soon as the three operands are provided to the instruction by other instruction(s) on which the instruction depends. Accordingly, a data flow architecture can perform in a highly parallel environment without concern that instructions will execute before their data dependencies are updated/satisfied. For example, a data flow architecture may be utilized in large scale computing systems that use massive numbers of processing elements to highly parallelize processing.
In general, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts.